package com.library.books.domain.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.library.books.domain.BooksCopy;
import com.library.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;

/**
 * @ClassName: BooksJoinBooksCopy
 * @Description: 书籍拼接书籍副本实体类
 * @Author: hb
 * @Date: 2024/10/15
 */
@Data
@Accessors(chain = true)
public class BooksJoinBooksCopy {

    /** id */
    @ApiModelProperty("id")
    @TableId(type = IdType.AUTO)
    private Long booksCopyId;

    /** 书籍id */
    @ApiModelProperty("书籍id")
    @Excel(name = "书籍id")
    private Long booksId;

    /** 书架id */
    @ApiModelProperty("书架id")
    @Excel(name = "书架id")
    private Long bookShelfId;

    /** RFID号 */
    @ApiModelProperty("RFID号")
    @Excel(name = "RFID号")
    private String booksCopyRfid;

    /** 条码号 */
    @ApiModelProperty("条码号")
    @Excel(name = "条码号")
    private String booksCopyBarcode;

    /** 卷册值:1:2 */
    @ApiModelProperty("卷册值")
    @Excel(name = "卷册值")
    private String booksCopyVolume;

    /** 馆藏地点以字典为准 */
    @ApiModelProperty("馆藏地点")
    @Excel(name = "馆藏地点")
    private String booksCopyCollectSite;

    /** 当前所在馆藏地点以字典为准 */
    @ApiModelProperty("所在馆藏地点")
    @Excel(name = "所在馆藏地点")
    private String booksCopyPonputSite;

    /** 小类索书号 */
    @ApiModelProperty("小类索书号")
    @Excel(name = "小类索书号")
    private String booksCopyLicense;

    /** 规则id */
    private Long booksRuleId;

    /** 状态：0：正常，1：借出，2：未上架 */
    @ApiModelProperty("状态：0：正常，1：借出，2：未上架")
    @Excel(name = "状态：0：正常，1：借出，2：未上架")
    private String booksCopyStatus;

    /** ISBN号 */
    @ApiModelProperty("ISBN号")
    @Excel(name = "ISBN号")
    private String booksIsbn;

    /** 书籍名称 */
    @ApiModelProperty("书籍名称")
    @Excel(name = "书籍名称")
    private String booksName;

    /** 书籍类别-大类 */
    @ApiModelProperty("国图书大分类")
    @Excel(name = "国图书大分类")
    private String booksType;

    /** 国图书分类-小类 */
    @ApiModelProperty("国图书小分类")
    @Excel(name = "国图书小分类")
    private String booksCnType;

    /** 书籍作者 */
    @ApiModelProperty("书籍作者")
    @Excel(name = "书籍作者")
    private String booksAuthor;

    /** 出版社 */
    @ApiModelProperty("出版社")
    @Excel(name = "出版社")
    private String booksPublisher;

    /** 出版地 */
    @ApiModelProperty("出版地")
    @Excel(name = "出版地")
    private String booksPublisherPlace;

    /** 出版时间 */
    @ApiModelProperty("出版时间")
    @Excel(name = "出版时间")
    private String booksPublisherDate;

    /** 书籍单价 */
    @ApiModelProperty("书籍单价")
    @Excel(name = "书籍单价")
    private BigDecimal booksPrice;

    /** 内容简介 */
    @ApiModelProperty("内容简介")
    @Excel(name = "内容简介")
    private String booksSynopsis;

    /** 封面图片 */
    @ApiModelProperty("封面图片")
    @Excel(name = "封面图片")
    private String booksCoverPhoto;

    /** 分辑号 */
    @ApiModelProperty("分辑号")
    @Excel(name = "分辑号")
    private String booksPartNumber;

    /** 书籍总页数 */
    @ApiModelProperty("书籍总页数")
    @Excel(name = "书籍总页数")
    private String booksPages;

    /** 书籍字数 */
    @ApiModelProperty("书籍字数")
    @Excel(name = "书籍字数")
    private String booksWords;

    /** 馆藏类型/规则名 */
    @ApiModelProperty("规则名")
    @Excel(name = "规则名")
    private String booksRuleName;

    /** 副本/馆藏 批次id */
    @ApiModelProperty("批次id")
    @Excel(name = "批次id")
    private Long lotId;

    /** 副本/馆藏 批次名 */
    @ApiModelProperty("批次名")
    @Excel(name = "批次名")
    private String lotName;

    /** 数量 */
    @ApiModelProperty("数量")
    @Excel(name = "数量")
    @TableField(exist = false)
    private Long booksNum;

    private List<BooksCopy> booksCopyList;

    /** 条件 books id 列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Collection<Long> queryBooksIds;

    /// 对于比较重要的书籍是有RFID的，不重要的书籍是没有RFID的，比如教材。则以条形码进行借阅（至于门禁怎么处理没有RFID的则是取决校方）

    /** 条件 rfid列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Collection<String> queryRfids;

    /** 条件 barcode列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Collection<String> queryBarcodes;

}
